package com.jhy.szl.daima20240919;

/**
 * 给定一个字符串 s，
 * 它包含小写字母和数字字符，请编写一个函数，
 * 将字符串中的字母字符保持不变，而将每个数字字符替换为number。
 */
public class ReplaceNumber {
    public static String replaceNumber(String s) {
        char[] chars = s.toCharArray();
        int count = 0;
        int oldLength = chars.length;
        for (int i = 0; i < chars.length; i++) {
            // 计算数字的个数
            if (Character.isDigit(chars[i])) {
                count++;
            }
        }
        // 扩容
        char[] news = new char[oldLength + 5 * count];
        int newsLength = news.length;
        System.arraycopy(chars, 0, news, 0, oldLength);
        // 定义两个双指针 一个指向旧数组的末尾 一个指向新数组末尾
        for (int i = oldLength - 1, j = newsLength - 1; i < j; i--, j--) {
            // 如果遇到非数字了 就将s[j]执行s[i] 指向同一个位置
            if (!Character.isDigit(news[j])) {
                news[j] = news[i];
            } else {
                news[j] = 'r';
                news[j - 1] = 'e';
                news[j - 2] = 'b';
                news[j - 3] = 'm';
                news[j - 4] = 'u';
                news[j - 5] = 'n';
                j -= 5;
            }
        }
        return new String(news);
    }

}


